Modelos de regressão, são modelos matemáticos que relacionan o comportamento de uma variável Y com outra X, a variável X é a variável independente, que são as entradas do modelo, a variável Y é a variável dependente, que é saída do modelo.O modelo é chamado de simples quando envolve apenas duas variáveis e múltiplo quando possui mais de duas variavéis.
Uma variável independente x, explica a variação em outra variável, que é chamada de variável dependente Y. Este relacionamento existe em apenas um direção.
variável independente (x) -> variável dependente (y)
Análise de regressão é uma metodologia estatística que utiliza a relaçao entre duas ou mais variáveis quantitativas de tal forma que uma variável possa ser predita a partir de outra.
O objetivo da regressão linear é buscar a equação de uma linha de regressão que minimize a soma dos erros ao quadrado, da diferença entre o valor observado de Y e o valor previsto.
Fórmula da regressão
Fórmulas que ajudam a explicar o modelo de regressão:
(SST - Sum Square Total) Soma total dos quadrados, mostra a variação em Y em torno da própria média, o nível do modelo de regressão. É a medida da variação total.
(SSR - Sum Square Regression) Soma dos quadrados de regressão, oferece a variação de Y considerando as variáveis X utilizadas no modelo. É a medida da variação que pode ser explicada.
(SSE - Sum Square Error) Soma dos quadrados dos residuos, mostra a variação de Y que não é explicada pelo modelo elaborado. É a medida da variação que não pode ser explicada.
SST = SSE + SSR
Se o SSR é alto e o SSE é baixo, o modelo de regressão explica a variação nas previçoes.
Se o SSR é baixo de o SSE é alto, o modelo de regressão não explica bem a variação nas previsões.
Cost Function
O objetivo da regressão linear é a busca de uma linha de regressão que minimize a soma dos erros ao quadrado, da diferença entre o valor observado Y e o valor previsto.
Existem alguns métodos para minimização da Cost Function tais como:
In [1]:
from sklearn import linear_model
from sklearn.datasets import load_boston
boston_dataset = load_boston()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
dataset = pd.DataFrame(data=boston_dataset.data, columns=boston_dataset.feature_names)
dataset['target'] = boston_dataset.target
dataset.head(5)
Out[1]:
In [2]:
# print(boston.DESCR)
In [3]:
from scipy.stats.stats import pearsonr
print('Correlação: %0.5f' % pearsonr(dataset['RM'], dataset['target'])[0])
In [4]:
x_range = [dataset['RM'].min(),dataset['RM'].max()]
y_range = [dataset['target'].min(),dataset['target'].max()]
print(x_range)
print(y_range)
In [6]:
model = linear_model.LinearRegression(normalize=False, fit_intercept=True)
num_observ = len(dataset)
x = dataset['RM'].values.reshape((num_observ, 1)) # X deve ser uma matriz
y = dataset['target'].values # Y pode ser um vetor
model.fit(x, y)
predicts = model.predict(x)
In [7]:
scatter_plot = dataset.plot(kind='scatter', x='RM', y='target', xlim=x_range, ylim=y_range)
regression_line = scatter_plot.plot(
dataset['RM'], predicts, '-', color='orange', linewidth=2
)
In [8]:
print(model.coef_)
print(model.intercept_)
In [10]:
sum_squared_regression = pd.Series(predicts - dataset['target'].mean())**2
SSR = np.sum(sum_squared_regression)
print('Soma dos quadrados da regressão (SSR):', SSR)
In [18]:
sum_squared_errors = pd.Series(predicts - dataset['target'])**2
SSE = np.sum(sum_squared_errors)
print('Soma dos quadrados dos erros (SSE):', SSE)
In [21]:
SST = (SSE + SSR)
print('SSE + SSR = SST', SST)
In [22]:
R2 = 1 - SSE / SST
print('R² = 1 - SSE / SST:', R2)
In [23]:
print('Valores esperados: \n', dataset['target'].values[0:10])
print('Valores previstos: \n', predicts[:10])